<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>只读存储器（ROM）实验 :: 计算机组成原理实验指导</title>
    <link rel="prev" href="dp-single_cycle_datapath.html">
    <link rel="next" href="mem-ram.html">
    <meta name="generator" content="Antora 3.2.0-alpha.8">
    <link rel="stylesheet" href="../../_/css/site.css">
<!--    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script> -->
  </head>
  <body class="article">
<header class="header">
  <nav class="navbar">
    <div class="navbar-brand">
      <a class="navbar-item" href="../..">计算机组成原理实验指导</a>
      <button class="navbar-burger" aria-controls="topbar-nav" aria-expanded="false" aria-label="Toggle main menu">
        <span></span>
        <span></span>
        <span></span>
      </button>
    </div>
    <div id="topbar-nav" class="navbar-menu">
      <div class="navbar-end">

        <div class="navbar-item">
          <span class="control">
            <a class="button is-primary" href="https://gitee.com/fpga-lab/digisimlab-open" target="_blank">Download</a>
          </span>
        </div>
      </div>
    </div>
  </nav>
</header>
<div class="body">
<div class="nav-container" data-component="digisimlab" data-version="">
  <aside class="nav">
    <div class="panels">
<div class="nav-panel-menu is-active" data-panel="menu">
  <nav class="nav-menu">
    <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button>
    <h3 class="title"><a href="../index.html">计算机组成原理实验指导</a></h3>
<ul class="nav-list">
  <li class="nav-item" data-depth="0">
    <button class="nav-item-toggle"></button>
    <span class="nav-text">Digital仿真软件使用指南</span>
<ul class="nav-list">
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../introduce-digitalsim.html">概述</a>
  </li>
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../ds-getting-started.html">新手入门</a>
  </li>
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../ds-generate-circuit.html">电路生成</a>
  </li>
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../ds-test-circuit.html">电路测试</a>
  </li>
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../ds-sim-dff.html">时序电路仿真</a>
  </li>
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../ds-other-useful.html">几个有用的组件</a>
  </li>
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../ds-hierarchical-design.html">层次化设计</a>
  </li>
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../ds-parametric-design.html">参数化设计</a>
  </li>
</ul>
  </li>
  <li class="nav-item" data-depth="0">
<ul class="nav-list">
  <li class="nav-item" data-depth="1">
    <button class="nav-item-toggle"></button>
    <span class="nav-text">逻辑电路基础</span>
<ul class="nav-list">
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="bl-multiplexer.html">多路选择器实验</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="bl-decoder.html">译码器实验</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="bl-register.html">触发器和寄存器实验</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="bl-counter.html">计数器实验</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="dp-register_file.html">寄存器堆实验</a>
  </li>
</ul>
  </li>
  <li class="nav-item" data-depth="1">
    <button class="nav-item-toggle"></button>
    <span class="nav-text">运算器</span>
<ul class="nav-list">
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="op-add_sub_operation.html">加减运算电路实验</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="op-arithmetic_logic_unit.html">算术逻辑单元实验</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="op-compare.html">比较运算电路实验</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="dp-single_cycle_datapath.html">运算器数据通路实验</a>
  </li>
</ul>
  </li>
  <li class="nav-item" data-depth="1">
    <button class="nav-item-toggle"></button>
    <span class="nav-text">存储器</span>
<ul class="nav-list">
  <li class="nav-item is-current-page" data-depth="2">
    <a class="nav-link" href="mem-rom.html">ROM实验</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="mem-ram.html">RAM实验</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="mem-path.html">存储器应用实验</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="mem-path-2.html">存储器数据通路实验</a>
  </li>
</ul>
  </li>
</ul>
  </li>
  <li class="nav-item" data-depth="0">
<ul class="nav-list">
  <li class="nav-item" data-depth="1">
    <button class="nav-item-toggle"></button>
    <span class="nav-text">控制器</span>
<ul class="nav-list">
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="cu-overview.html">概述（指令系统）</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="cu-hardwire_controller-1.html">硬布线控制实验（RI）</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="cu-hardwire_controller-3.html">硬布线控制实验（RIM）</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="cu-hardwire_controller.html">硬布线控制实验（RIB）</a>
  </li>
</ul>
  </li>
</ul>
  </li>
</ul>
  </nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
  <div class="context">
    <span class="title">计算机组成原理实验指导</span>
    <span class="version">1.31</span>
  </div>
  <ul class="components">
    <li class="component is-current">
      <div class="title"><a href="../index.html">计算机组成原理实验指导</a></div>
      <ul class="versions">
        <li class="version is-current is-latest">
          <a href="../index.html">1.31</a>
        </li>
        <li class="version">
          <a href="../1.2/index.html">1.2</a>
        </li>
        <li class="version">
          <a href="../1.1/index.html">1.1</a>
        </li>
        <li class="version">
          <a href="../1.0/index.html">1.0</a>
        </li>
      </ul>
    </li>
  </ul>
</div>
    </div>
  </aside>
</div>
<main class="article">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
  <a href="../index.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
  <ul>
    <li><a href="../index.html">计算机组成原理实验指导</a></li>
    <li>存储器</li>
    <li><a href="mem-rom.html">ROM实验</a></li>
  </ul>
</nav>
<div class="page-versions">
  <button class="version-menu-toggle" title="Show other versions of page">1.31</button>
  <div class="version-menu">
    <a class="version is-current" href="mem-rom.html">1.31</a>
    <a class="version" href="../1.2/lab/mem-rom.html">1.2</a>
    <a class="version" href="../1.1/lab/mem-rom.html">1.1</a>
    <a class="version is-missing" href="../1.0/index.html">1.0</a>
  </div>
</div>
</div>
  <div class="content">
<aside class="toc sidebar" data-title="页内目录" data-levels="2">
  <div class="toc-menu"></div>
</aside>
<article class="doc">
<h1 class="page">只读存储器（ROM）实验</h1>
<div class="sect1">
<h2 id="_实验目的"><a class="anchor" href="#_实验目的"></a>实验目的</h2>
<div class="sectionbody">
<div class="olist arabic">
<ol class="arabic">
<li>
<p>熟悉ROM的功能特性及用法。</p>
</li>
<li>
<p>了解七段数码管的显示原理。</p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_实验原理"><a class="anchor" href="#_实验原理"></a>实验原理</h2>
<div class="sectionbody">
<div class="paragraph">
<p>ROM（Read Only Memory），即只读存储器，是指在应用系统中只能读出、不能写入的半导体随机存储器。
在计算机中，存放引导程序代码是ROM的一个典型应用场景。
也可以用来存放固定不变的数据，如字符点阵数据。</p>
</div>
<div class="paragraph">
<p>此外，还可以用ROM实现逻辑功能。
将ROM的地址看作逻辑电路的输入，而对应单元的内容就是逻辑电路的输出。
例如，可以用8×1位的ROM实现3输入1输出的任何组合逻辑功能。</p>
</div>
<div class="paragraph">
<p>本实验用ROM实现七段数码管的译码。
七段数码管主要由七个条形的发光二极管（LED）组成，它们排列成类似数字 “8” 的形状。
这七个段分别被标记为a、b、c、d、e、f、g，有些数码管还有一个小数点段，标记为dp。
当在某段LED上施加一定的正向电压时，该段LED点亮。
通过不同的组合，可用来显示数字0～9和少量字母符号，
如<a href="#fig-7seg-display">图 1</a>所示。</p>
</div>
<div id="fig-7seg-display" class="imageblock">
<div class="content">
<img src="_images/mem-7seg-display.png" alt="mem 7seg display" width="533">
</div>
<div class="title">图 1. 七段数码管及十六进制数字形</div>
</div>
<div class="paragraph">
<p>在实际应用中，通常使用七段译码器将输入的二进制代码转换为七段数码管各个笔段所需的驱动信号，
电路框图如<a href="#fig-mem-7seg">图 2</a>所示。
在本实验中，图中“7段译码”由ROM实现。</p>
</div>
<div id="fig-mem-7seg" class="imageblock">
<div class="content">
<img src="_images/mem-7seg-decode.png" alt="mem 7seg decode">
</div>
<div class="title">图 2. 七段显示译码电路框图</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_实验任务"><a class="anchor" href="#_实验任务"></a>实验任务</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_设计任务"><a class="anchor" href="#_设计任务"></a>设计任务</h3>
<div class="paragraph">
<p>按照<a href="#fig-mem-7seg">图 2</a>电路原理用ROM设计七段显示译码电路。图中“7段译码”由ROM实现，4位二进制数据输入作为ROM的地址，ROM的输出是地址所对应十六进制数字的七段编码（包含小数点实际是八段）。</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>绘制电路图。</p>
<div class="paragraph">
<p>ROM组件位于「组件 ➤ 存储器 ➤ ROM」（Components ➤ Memory ➤ ROM）。
ROM组件的属性设置为「数据位数：8；地址位数：4」。</p>
</div>
<div class="paragraph">
<p>显示组件位于「组件 ➤ 输入输出 ➤ 显示 ➤ 7段数码管」（Components ➤ IO ➤ Displays ➤ Seven-Segment Display）。</p>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="提示"></i>
</td>
<td class="content">
ROM组件输出的8位数据需经过分线器组件拆分为8个1位数据连接到数码管的输入端口。
</td>
</tr>
</table>
</div>
</li>
<li>
<p>初始化ROM数据</p>
<div class="paragraph">
<p>现实世界ROM芯片的内容是在生产阶段固定下来的，在应用阶段无法改变ROM内容。
在仿真实验中，ROM组件需要在编辑状态下初始化其内容，仿真状态模拟了芯片的应用阶段，只能读出ROM组件的数据。</p>
</div>
<div class="paragraph">
<p>ROM组件初始化数据的操作如下。右键点击ROM组件，再点击「编辑」按钮，在弹出的「数据」窗口中填入与「地址」对应的「值」。填入的数据可以通过「文件」菜单「保存」，日后可以从磁盘「载入」。</p>
</div>
<div class="paragraph">
<p>ROM单元的内容存放数码管每个段的是否需要点亮的信息。
例如，0号单元存放数字“0”所对应的七段编码；1号单元存放数字“1”所对应的七段编码，以此类推。
在ROM组件的属性窗口点击「编辑」按钮，用下面的数据初始化ROM的前8个存储单元。</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs">0b00111111
0b00000110
0b01011011
0b01001111
0b01100110
0b01101101
0b01111101
0b00000111</code></pre>
</div>
</div>
</li>
<li>
<p>完善数据使电路能够显示“8~F”</p>
<div class="paragraph">
<p>理解数码管显示原理，编写“8~F”的显示数据，填入ROM的后8个存储单元。</p>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="_验证任务"><a class="anchor" href="#_验证任务"></a>验证任务</h3>
<div class="paragraph">
<p>通过仿真验证实验电路及初始化的七段编码是否正确。
使ROM组件的sel为1，通过输入组件输入4位二进制数，七段数码管应显示对应数字；同时观察ROM组件输出的8位数据应与初始化数据一致。</p>
</div>
<div class="sidebarblock text-center">
<div class="content">
<div class="title">许可 | License</div>
<div class="paragraph">
<p><a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh">CC BY-NC-SA：署名-非商业性使用-相同方式共享 4.0 国际许可协议</a></p>
</div>
<div class="paragraph">
<p>作者：
肖铁军 &lt;<a href="mailto:xiaotiejun@foxmail.com.cn">xiaotiejun@foxmail.com.cn</a>&gt;</p>
</div>
</div>
</div>
</div>
</div>
</div>
<nav class="pagination">
  <span class="prev"><a href="dp-single_cycle_datapath.html">运算器数据通路实验</a></span>
  <span class="next"><a href="mem-ram.html">RAM实验</a></span>
</nav>
</article>
  </div>
</main>
</div>
<footer class="footer">
  <p>This page was built using the Antora default UI.</p>
  <p>The source code for this UI is licensed under the terms of the MPL-2.0 license.</p>
</footer>
<script id="site-script" src="../../_/js/site.js" data-ui-root-path="../../_"></script>
<script async src="../../_/js/vendor/highlight.js"></script>
  </body>
</html>
